package com.time.admin.domain.service;

import com.time.admin.domain.entity.CacheKeyItemBO;
import com.time.admin.domain.entity.CacheMetricsBO;

import java.util.List;

/**
 * 缓存管理领域服务层接口类
 *
 * @author: HuangQi
 * @date: Created in 2025/01/XX
 * @description: 缓存管理领域服务层接口
 */
public interface AdminCacheDomainService {

    /**
     * 获取缓存总体统计
     *
     * @param prefix 缓存前缀，可选参数
     * @return 缓存统计信息
     */
    CacheMetricsBO metrics(String prefix);

    /**
     * 分页列出缓存键（按前缀/模式）
     *
     * @param pattern 匹配模式，可选参数，默认为"*"
     * @param page 页码，从0开始
     * @param size 每页大小
     * @return 缓存键列表
     */
    List<CacheKeyItemBO> listKeys(String pattern, int page, int size);

    /**
     * 删除单个缓存键
     *
     * @param key 要删除的缓存键
     * @return 删除结果，true-成功，false-失败
     */
    boolean evict(String key);

    /**
     * 按模式批量删除缓存键
     *
     * @param pattern 匹配模式
     * @return 删除的缓存键数量
     */
    long evictByPattern(String pattern);

    /**
     * 清空指定前缀的缓存（或全部）
     *
     * @param prefix 缓存前缀，可选参数，不传则清空全部
     * @return 删除的缓存键数量
     */
    long evictAll(String prefix);
}


